---
title: Validator Deployment and Configuration
description: Learn how to set up, configure, and manage a Sui validator node.
keywords: [ sui validator node, validator nodes, validator node configuration, configure validator node, set up validator node, manage validator ]
sidebar_position: 1
sidebar_label: Deployment and Configuration
---

Validators on Sui run specialized validator nodes that can execute more tasks than full nodes. Validators are used for staking, gas price reference, and tallying rules.

## Validator requirements

To run a Sui validator, you must set up and configure a Sui validator node. Specific steps you must take include:

1. Install and configure Sui.
2. Configure port and protocol settings.
3. Configure key management.
4. Configure storage.
5. Update software.
6. Execute on-chain commands to interact with the network.
7. Update the gas price survey.
8. Report to other validators.

### Hardware requirements

Suggested minimum hardware specifications to run a Sui validator node:

- CPU: 24 physical cores (or 48 virtual cores)
- Memory: 128 GB
- Storage: 4 TB NVME
- Network: 1 Gbps

<ImportContent source="staking-pool-reqs.mdx" mode="snippet" />

To set up staking on your validator node:

1. Call `request_add_validator_candidate` to become a candidate. This creates the on-chain validator information and initializes a staking pool for delegators to contribute to.

2. Acquire 30M SUI by staking to the validator staking pool created in the previous step. Call the `request_add_stake` with the address of the validator (this is not the same as the staking pool ID).

3. Call `request_add_validator` to have the validator become a pending validator. At the next epoch, it joins the validator set. Before the next epoch, you should stand up the validator so that when the epoch changes, it can participate.

[Learn more about validator staking rewards](./validator-rewards.mdx).

## Deployment

You can deploy Sui node in a number of ways.

1. Use pre-built container images available in [Docker Hub](https://hub.docker.com/r/mysten/sui-node/tags).

2. Use pre-built `linux/amd64` binaries available in S3 that you can fetch using one of the following methods:

```sh
$ wget https://releases.sui.io/$SUI_SHA/sui-node
```

```sh
$ curl https://releases.sui.io/$SUI_SHA/sui-node -o sui-node
```

Or, to build directly from source:

```sh
$ git clone https://github.com/MystenLabs/sui.git && cd sui
$ git checkout [SHA|BRANCH|TAG]
$ cargo build --release --bin sui-node
```

For more information on deploying a validator, refer to the [Sui for Node Operators](https://github.com/MystenLabs/sui/blob/main/nre/sui_for_node_operators.md) guide.

## Configuration

Configuration guides are available for the following deployment options:

- [Systemd](https://github.com/MystenLabs/sui/blob/main/nre/systemd/README.md)
- [Ansible](https://github.com/MystenLabs/sui/blob/main/nre/ansible/README.md)
- [Docker Compose](https://github.com/MystenLabs/sui/blob/main/nre/docker/README.md)

`sui-node` runs with a single configuration file provided as an argument, for example:

```sh 
$ ./sui-node --config-path /opt/sui/config/validator.yaml
```

For more information on configuring a validator, refer to the [Sui for Node Operators](https://github.com/MystenLabs/sui/blob/main/nre/sui_for_node_operators.md) guide.

See [Validator](https://github.com/MystenLabs/sui/blob/main/nre/config/validator.yaml) for configuration templates.

## Connectivity

`sui-node` uses the following ports by default:

| protocol/port | reachability     | purpose                           |
| ------------- | ---------------- | --------------------------------- |
| TCP/8080      | Inbound          | Validator/transaction interface   |
| TCP/8081      | Inbound/outbound | Consensus interface               |
| UDP/8084      | Inbound/outbound | Peer-to-peer state sync interface |
| TCP/8443      | Outbound         | Metrics pushing                   |
| TCP/9184      | Localhost        | Metrics scraping                  |

To run a validator successfully, it is critical that ports 8080-8084 are open as outlined, including the specific protocol (TCP/UDP).

## Network buffer

Load testing Sui validator networks suggests that the default Linux network buffer sizes are too small.
It is recommend to increase them using one of the following two methods:

### Option 1: With `/etc/sysctl.d/`

Add these settings to a new `sysctl` file specifically for `sui-node` or append to an existing file. Modifications made in this way persist across system restarts.

Create a new `sysctl` file for the `sui-node`:

```sh
$ sudo nano /etc/sysctl.d/100-sui-node.conf
```

Add these lines to the file, overwriting existing settings if necessary:

```sh 
net.core.rmem_max = 104857600
net.core.wmem_max = 104857600
net.ipv4.tcp_rmem = 8192 262144 104857600
net.ipv4.tcp_wmem = 8192 262144 104857600
```

Apply the settings immediately, before the next restart:

```sh
$ sudo sysctl --system
```

### Option 2: With `sysctl` command

These modifications do not persist across system restarts. Therefore, run the commands each time the host restarts.

```sh
$ sudo sysctl -w net.core.wmem_max=104857600
$ sudo sysctl -w net.core.rmem_max=104857600
$ sudo sysctl -w net.ipv4.tcp_rmem="8192 262144 104857600"
$ sudo sysctl -w net.ipv4.tcp_wmem="8192 262144 104857600"
```

### Verification

To verify that the system settings have successfully been updated, check the output of the following command:

```sh
$ sudo sysctl -a | egrep [rw]mem
```
